#pragma once
#include "interfaces.h"
class EventData_GameStart : public IEventData
{
public:
	EventData_GameStart() {}
	~EventData_GameStart() {}


	virtual const EventType VGetEventType();
	static const EventType m_EventType;
};
class EventData_GameEnd : public IEventData
{
public:
	EventData_GameEnd() {}
	~EventData_GameEnd() {}

	virtual const EventType VGetEventType();
	static const EventType m_EventType;
};
class EventData_View_MoveForward : public IEventData // View -> it has casted it
{
public:
	EventData_View_MoveForward(const float dir, const ActorId actor) : m_dir(dir), m_actor(actor) {}
	~EventData_View_MoveForward() {}

	float m_dir; ActorId m_actor;

	virtual const EventType VGetEventType();
	static const EventType m_EventType;
};
class EventData_View_MoveLeft : public IEventData // View -> it has casted it
{
public:
	EventData_View_MoveLeft(const float dir, const ActorId actor) : m_dir(dir), m_actor(actor) {}
	~EventData_View_MoveLeft() {}

	float m_dir; ActorId m_actor;

	virtual const EventType VGetEventType();
	static const EventType m_EventType;
};
class EventData_View_Rotate : public IEventData // View -> it has casted it
{
public:
	EventData_View_Rotate(const float rot_x, const float rot_y, const float rot_z, const ActorId actor) : m_rot_x(rot_x), m_rot_y(rot_y), m_rot_z(rot_z), m_actor(actor) {}
	~EventData_View_Rotate() {}

	float m_rot_x, m_rot_y, m_rot_z; ActorId m_actor;

	virtual const EventType VGetEventType();
	static const EventType m_EventType;
};
